const http = require('http');
const fs = require('fs');
const path = require('path');

// 配置静态文件目录和默认文件
const STATIC_DIR = '.';
const DEFAULT_FILE = 'index.html';

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
  // 1. 解析请求的文件路径
  let filePath = path.join(__dirname, STATIC_DIR, req.url === '/' ? DEFAULT_FILE : req.url);
  
  // 2. 自动补全文件扩展名（可选）
  if (path.extname(filePath) === '') {
    filePath = path.join(filePath, DEFAULT_FILE); // 尝试访问目录下的 index.html
  }

  // 3. 读取文件并响应
  fs.readFile(filePath, (err, data) => {
    if (err) {
      // 文件不存在时返回 404
      if (err.code === 'ENOENT') {
        res.writeHead(404, { 'Content-Type': 'text/html' });
        res.end('<h1>404 Not Found</h1>');
      } else {
        // 其他错误（如权限问题）
        res.writeHead(500);
        res.end('Server Error');
      }
      return;
    }

    // 根据文件类型设置 Content-Type
    const extname = path.extname(filePath).substring(1);
    const mimeTypes = {
      html: 'text/html',
      js: 'text/javascript',
      css: 'text/css',
      json: 'application/json',
      png: 'image/png',
      jpg: 'image/jpg',
      gif: 'image/gif',
      svg: 'image/svg+xml',
      txt: 'text/plain'
    };
    const contentType = mimeTypes[extname] || 'application/octet-stream';

    // 成功响应
    res.writeHead(200, { 'Content-Type': contentType });
    res.end(data);
  });
});

// 启动服务器
const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Static file server running at http://localhost:${PORT}/`);
  console.log(`Serving files from: ${path.resolve(STATIC_DIR)}`);
});